﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;

namespace MAntLibrary
{
    /// <summary>
    /// Trida Dodavatel reprezentuje dodavatele (znacku) vyrobku
    /// </summary>
    public class Dodavatel
    {
        #region VARIABLES

        private static List<Dodavatel> seznamDodavatelu = new List<Dodavatel>();

        private string jmenoDodavatele;
        public string JmenoDodavatele
        {
            set
            {
                jmenoDodavatele = value;
            }
            get
            {
                return jmenoDodavatele;
            }
        }

        private int sleva;
        public int SlevaProDodavatele
        {
            set{ sleva = value; }
            get{ return sleva; }
        }

        #endregion

        #region CONSTRUCTORS

        public Dodavatel() { }

        public Dodavatel(string j, int s)
        {
            JmenoDodavatele = j;
            SlevaProDodavatele = s;
        }
        #endregion

        
        public static void setDodavatele(string retezec)
        {
            // tmp
            //retezec = "Bartak>0";

            seznamDodavatelu.Clear();
            string[] dodavatele = retezec.Split(';');
            string[] t;

            foreach (string item in dodavatele)
            {
                if (string.IsNullOrEmpty(item)) { continue; }
                
                t = item.Split('>');
                
                seznamDodavatelu.Add(new Dodavatel(t[0], Convert.ToInt32(t[1])));
            }
        }

        public static void setDodavatele(Dodavatel d)
        {
            seznamDodavatelu.Add(d);
        }

        public static List<Dodavatel> getDodavatele() 
        {
            return seznamDodavatelu; 
        }

        public static string getDodavatele(bool b)
        {
            string temp = string.Empty;
            foreach (Dodavatel d in seznamDodavatelu)
            {
                temp += d.JmenoDodavatele + ">" + d.SlevaProDodavatele+ ";";
            }
            return temp;
        }

        /// <summary>
        /// kdyz je true true vrati seznam dodavatelu
        /// jinak vrati seznam slev
        /// </summary>
        /// <param name="b"></param>
        /// <param name="c"></param>
        /// <returns></returns>
        public static List<string> getDodavatele(bool b, bool c)
        {
            List<string> temp = new List<string>();
            foreach (Dodavatel d in seznamDodavatelu)
            {
                if (b && c)
                {
                    temp.Add(d.JmenoDodavatele);
                }
                else
                {
                    temp.Add(d.SlevaProDodavatele.ToString());
                }

            }
            return temp;
        }

        /// <summary>
        /// vrati string dodavatelu oddelenych oddelovacem
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public static string getDodavatele(char ch)
        {
            string temp = string.Empty;
            foreach (Dodavatel d in seznamDodavatelu)
            {
                temp += d.jmenoDodavatele + ch + " ";
            }
            temp = temp.Substring(0, temp.Length - 2);
            return temp;
        }

        /// <summary>
        /// vrati hodnotu slevy danneho dodavatele
        /// </summary>
        /// <param name="dod"></param>
        /// <returns></returns>
        public static string getSleva(string dod)
        {
            foreach (Dodavatel d in seznamDodavatelu)
            {
                if (d.JmenoDodavatele.Equals(dod))
                {
                    return d.SlevaProDodavatele.ToString();
                }
            }
            return "";
        }


        #region EDIT METHODS
        /// <summary>
        /// edituje hodnotu ceny na zaklade jmena dodavatele
        /// </summary>
        /// <param name="p"></param>
        /// <param name="p_2"></param>
        public static void editDodavatele(string p, int p_2)
        {
            foreach (Dodavatel d in seznamDodavatelu)
            {
                if (d.JmenoDodavatele.Equals(p))
                {
                    d.SlevaProDodavatele = p_2;
                    return;
                }
            }

        }
        #endregion
    }
}
